﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ImobitechDao;
using ImobitechDao.Repositories;


namespace ImobitechModel.Facade
{
    public class PerfilFacade
    {
        private static PerfilFacade instance;

        private PerfilFacade() { }

        public static PerfilFacade getInstance()
        {
            if(instance==null)
            {
                instance = new PerfilFacade();
            }
            return instance;
        }

        public Object salvarUsuario(Pessoa pessoa)
        {
            if (pessoa.Id == 0)
            {
                return inserirUsuario(pessoa);
            }
            else
            {
                return atualizarUsuario(pessoa);
            }
        }

        private Object inserirUsuario(Pessoa pessoa)
        {
            IPessoaRepository _pessoaRepositorio = new PessoaRepository(Contexto.Instance.Context);
            return _pessoaRepositorio.Create(pessoa);
        }

        private Object atualizarUsuario(Pessoa pessoa)
        {
            return null;
        }

        public Object insertPerfil(Pessoa pessoa)
        {
            IPessoaRepository _pessoaRepositorio = new PessoaRepository(Contexto.Instance.Context);
            return _pessoaRepositorio.Create(pessoa);
        }

        public Object editaPerfil(Pessoa pessoa)
        {
            IPessoaRepository _pessoaRepositorio = new PessoaRepository(Contexto.Instance.Context);
            return _pessoaRepositorio.Update(pessoa);
        }

        public Object retornaPerfil(int id)
        {
            IPessoaRepository _pessoaRepositorio = new PessoaRepository(Contexto.Instance.Context);
            return _pessoaRepositorio.GetById(id);
        }
        
        public Object retornaPerfis()
        {
            IPessoaRepository _pessoaRepositorio = new PessoaRepository(Contexto.Instance.Context);
            return _pessoaRepositorio.GetAll();
        }

        public Object retornaPapel(string papel)
        {
            IPapelRepository _papelRepository = new PapelRepository(Contexto.Instance.Context);
            return _papelRepository.retornaPapel(papel);
        }

        public Object retornaPerfil(int id, string _papel)
        {
            IPessoaRepository _pessoaRepositorio = new PessoaRepository(Contexto.Instance.Context);
            return _pessoaRepositorio.retornaPerfil(id, _papel);
        }

        public Object retornaPessoa(int id)
        {
            IPessoaRepository _pessoaRepository = new PessoaRepository(Contexto.Instance.Context);
            return _pessoaRepository.GetById(id);
        }

        public Object login(string login, string senha)
        {
            IPessoaRepository _pessoaRepository = new PessoaRepository(Contexto.Instance.Context);
            return _pessoaRepository.login(login, senha);
        }

        public Object retornaPapel(int id)
        {
            IPessoaPapelRepository _pessoaPapelRepository = new PessoaPapelRepository(Contexto.Instance.Context);
            return _pessoaPapelRepository.GetById(id);
        }

        public Object retornaPapelbyId(int id)
        {
            IPapelRepository _papelRepository = new PapelRepository(Contexto.Instance.Context);
            return _papelRepository.GetById(id);
        }

        public Object insertPerfil(Pessoa_Papel pessoaPapel)
        {
            IPessoaPapelRepository _pessoaPapelRepositorio = new PessoaPapelRepository(Contexto.Instance.Context);
            return _pessoaPapelRepositorio.Create(pessoaPapel);
        }

        public Object retornaPapelLocatario(int idPessoa)
        {
            IPessoaPapelRepository _pessoaPapelRepositorio = new PessoaPapelRepository(Contexto.Instance.Context);
            return _pessoaPapelRepositorio.retornaLocatario(idPessoa);
        }

        public Object retornaFuncionarios()
        {
            IPessoaRepository _pessoaRepositorio = new PessoaRepository(Contexto.Instance.Context);
            return _pessoaRepositorio.retornaFuncionarios();
        }
    }
}
